NLP

Learning Discourse-level Diversity for Neural Dialog Models using Conditional Variational Autoencoders

本文是ACL2017上的文章,主要研究对话生成多样性问题,作者提出了基于条件变分自编码器CVAE的对话生成模型,借助于隐变量学习回复的概率分布,同时还引入了回复的diaact信息作为外部语言知识。针对于带RNN decoder的VAE模型训练过程中存在的vanishing latent variable problem,作者引入了一种附加 bag loss。与基线模型相比,本文提出的模型在生成回复的多样性方面有明显提升。

paper link
code link

Introduction

传统的Encoder-decoder模型生成的回复往往是通用和无意义的,缺乏多样性。过去的工作主要围绕word-level来改进,基本分为两大类,第一种是增加输入信息,如对话的风格主题等;第二种关注Encoder-decoder模型的改进,包括运用beam-search, 激励生成较长的回复,RL-based等。而本文提出,response是多种可能的,不应该只有一个标准答案,所以应该按照_one-to-many_的方式来建模训练。这些多样性用隐变量来表征,然后decoder从学到的隐变量概率分布采样重建,生成不同的response。

本文的三个贡献:

  • 提出了基于conditional variational autoencoders(CVAE) 的对话生成模型。
  • 在CVAE的基础上,融合外部知识,提高模型的可解释性,建立了Knowledge-Guided CVAE (kgCVAE)模型。
  • 针对于CVAE在自然语言生成任务上训练时出现的问题,提出了一种辅助损失函数。

Background

_VAE details in https://helicqin.github.io/2018/06/04/GAN/_

Proposed Models

Figure  2:  Graphical  models  of  CVAE  (a)  and  kgC-VAE  (b)

Conditional Variational Autoencoder (CVAE) for Dialog Generation

先定义dialogue任务:c是对话的context (包含k-1 轮对话),x是要生成的第k轮对话,z是合理response的隐变量概率分布,此外还引入一个conversational floor变量(用0和1区分不同对话者)。生成任务可以表示为:

将 $p_{\theta}(z|c)$ 称之为prior network,$p_{\theta}(x|z,c)$ 称之为response decoder,生成过程如下:

  • prior network $p_{\theta}(z|c)$采样
  • 通过 response decoder $p_{\theta}(x|z,c)$ 生成x

与VAE类似,无法直接计算似然函数,转而最大化似然函数的下界:

如Figure 3所示,utterance和context均使用RNN编码,使用RNN的最后时刻的隐层状态作为utterance的编码$u_{i}$,然后再把所有的$u_{i}$与说话者身份信息(0/1编码)作为RNN的输入得到context表征。根据CVAE的假设,$q_{\phi}(z | x, c) \sim \mathcal{N}\left(\mu, \sigma^{2} \mathbf{I}\right)$ 和 $p_{\theta}(z | c) \sim \mathcal{N}\left(\mu^{\prime}, \sigma^{\prime 2} \mathbf{I}\right)$ 均满足高斯分布:

Knowledge-Guided CVAE (kgCVAE)

此外,这篇论文认为应该融合linguistic features,记为y,在这篇论文中,y主要是指dialog act。论文提出假设,x的生成依赖于c、 z 和y,而y又依赖于z和c。$y^{\prime}=\operatorname{MLP}_{y}(z, c)$:

A Training Method: Bag-of-Word Loss

论文提到,简单的把VAE和RNN decoder结合会因为vanishing latent variable problem导致z学不到有用的信息(KL loss在训练中迅速降为0)。论文提出一个方法来解决这个问题:bag-of-word loss。论文将x分解成两个变量:$x_{o}$ 是词序,$x_{bow}$ 是词袋 ,并假设二者相互独立:$p(x, z | c)=p\left(x_{O} | z, c\right) p\left(x_{b o w} | z, c\right) p(z | c)$。$p\left(x_{b o w} | z, c\right)$ 由$MLP_{b}$计算:V是词汇表


训练的目标函数在CVAE的基础上增加了bag-of-word loss:

Experiments

实验基于一个电话对话的数据集,the Switchboard(SW) 1 Release 2 Corpus,对比了三个模型:Baseline model,CVAE和kgCVAE,Baseline model是不含隐变量的encoder-decoder模型。

论文分析了两个例子,分别对应Context对Target utterance的不同限制大小。

实验证明,不管Context的熵大小,隐变量z都能捕捉上下文细微的信息,并体现在给出的回答上:Context熵小时,对话的多样性体现在词级别;Context熵大时,多样性体现在discourse级别。

另一个比较有趣的现象是,作者将z的后验概率分布用t-SNE在2D空间展示,发现隐变量相同的dialog act和相似的回复长度能聚类在一块。这也一定程度上说明了隐变量z能对有用的信息进行编码。

Conclusion

While the current paper ad-dresses diversifying responses in respect to dia-logue acts, this work is part of a larger research direction that targets leveraging both past linguis-tic findings and the learning power of deep neural networks to learn better representation of the la-tent factors in dialog.

本文的核心思想是对话应该是one-to-many的。在这个基础上,论文首先将CVAE迁移到对话任务中,用隐变量来捕捉discourse-level信息提升diversity;然后,在CVAE的基础上,论文进一步提出融合了专家知识的kgCVAE,提升性能和模型的可解释性;最后,论文提出了一种新的训练方法,旨在解决文本生成的优化问题,降低了模型的训练难度。

Reference